package single;

/**
 * @author 陈艺博
 * @date 2021-02-08 15:24
 * @description 定义公共的接口
 **/
public interface List<E> {
     public static final int ELEMENT_NOT_FOUND = -1;

    /**
     * 清空
     */
    void clear();

    /**
     * 元素的数量
     *
     * @return
     */
    int size();

    /**
     * 是否为空
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 是否包含某个元素
     *
     * @return
     */
    boolean contains(E element);

    /**
     * 添加一个元素
     *
     * @param element
     */
    void add(E element);

    /**
     * 指定位置添加一个元素
     *
     * @param index
     * @param element
     */
    void add(int index, E element);

    /**
     * 获得一个元素
     *
     * @param index 下标
     * @return
     */
    E get(int index);

    /**
     * 设置一个元素
     *
     * @param index
     * @param element
     * @return
     */
    E set(int index, E element);

    /**
     * 删除元素
     *
     * @param index
     * @return
     */
    E remove(int index);

    /**
     * 元素所在的位置
     * @param element
     * @return
     */
    int indexOf(E element);
}
